home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / gnu / gcctest / tests05.zoo / tfseek.c < prev    next >
C/C++ Source or Header  |  1992-11-07  |  1KB  |  89 lines

  1. #include "ansidecl.h"
  2. #include <stdio.h>
  3.  
  4. #ifndef SEEK_SET
  5. #define    SEEK_SET    0        /* from beginning of file */
  6. #define    SEEK_CUR    1        /* from current location */
  7. #define    SEEK_END    2        /* from end of file */
  8. #endif
  9.  
  10. #define TESTFILE "test.dat"
  11.  
  12. #ifdef sun
  13. #define remove unlink
  14. #endif
  15.  
  16. int
  17. main()
  18. {
  19.   FILE *fp;
  20.   int i, j;
  21.  
  22. #ifdef atarist
  23.   _binmode(1);
  24. #endif
  25.  
  26. /*  puts ("\nFile seek test"); */
  27.   fp = fopen (TESTFILE, "w");
  28.   if (fp == NULL)
  29.     {
  30.       perror (TESTFILE);
  31.       return 1;
  32.     }
  33.  
  34.   for (i = 0; i < 256; i++)
  35.     putc (i, fp);
  36.   if (freopen (TESTFILE, "r", fp) != fp)
  37.     {
  38.       perror ("Cannot open file for reading");
  39.       return 1;
  40.     }
  41.  
  42.   for (i = 1; i <= 255; i++)
  43.     {
  44. /*      printf ("%3d\n", i); */
  45.       fseek (fp, (long) -i, SEEK_END);
  46.       if ((j = getc (fp)) != 256 - i)
  47.     {
  48.       printf ("SEEK_END failed %d\n", j);
  49.       break;
  50.     }
  51.       if (fseek (fp, (long) i, SEEK_SET))
  52.     {
  53.       puts ("Cannot SEEK_SET");
  54.       break;
  55.     }
  56.       if ((j = getc (fp)) != i)
  57.     {
  58.       printf ("SEEK_SET failed %d\n", j);
  59.       break;
  60.     }
  61.       if (fseek (fp, (long) i, SEEK_SET))
  62.     {
  63.       puts ("Cannot SEEK_SET");
  64.       break;
  65.     }
  66.       if (fseek (fp, (long) (i >= 128 ? -128 : 128), SEEK_CUR))
  67.     {
  68.       puts ("Cannot SEEK_CUR");
  69.       break;
  70.     }
  71.       if ((j = getc (fp)) != (i >= 128 ? i - 128 : i + 128))
  72.     {
  73.       printf ("SEEK_CUR failed %d\n", j);
  74.       break;
  75.     }
  76.     }
  77.   fclose (fp);
  78.  
  79.   if(i > 255)
  80.   {
  81.     remove(TESTFILE);
  82.   }
  83.   else
  84.   {
  85.     puts ("Test FAILED!");
  86.   }
  87.   return (i > 255) ? 0 : 1;
  88. }
  89.